
import cloud from '@alipay/faas-web-sdk'
import { LeaderboardService } from './LeaderboardService';

export class ZfbCloud {
    private sdk
    private initData: {
        endpoint?: string,
        secretId: string,
        secretKey: string,
        appId: string,
        envId: string,
        runtime?: 'WEB' | 'ALIPAY_MINI' | 'WEICHAT_MINI'
    }

    /**
     * 
     * @param secretId 前四个参数是初始化必要参数
     * @param secretKey 前四个参数是初始化必要参数
     * @param appId 前四个参数是初始化必要参数
     * @param envId 前四个参数是初始化必要参数
     * @param endpoint 网关地址，可不填，默认通过 envId 拼接为 https://{envId}.api-hz.cloudbasefunction.cn
     * @param runtime 运行环境，浏览器或支付宝小程序中，可不填，微信小程序中使用时，需要设置为 'WEICHAT_MINI'
     */
    constructor(secretId: string, secretKey: string, appId: string, envId: string, endpoint?: string, runtime?: 'WEB' | 'ALIPAY_MINI' | 'WEICHAT_MINI') {
        this.initData = {
            endpoint: endpoint,
            secretId: secretId,
            secretKey: secretKey,
            appId: appId,
            envId: envId,
            runtime: "WEICHAT_MINI",
        };

        this.sdk = new cloud.Cloud(this.initData)

        this.init()
    }

    // 初始化sdk
    private async init() {
        await this.sdk.init()
    }

      // 获取排行榜接口
      public callLeaderboardService() {
        // 返回RankService类的实例，并传递初始化参数
        return new LeaderboardService(this, this.sdk);
    }

}